// 1. 利用或操作 `|` 和空格将英文字符转换为小写
('a' | ' ') = 'a'
('A' | ' ') = 'a'

// 2. 利用与操作 `&` 和下划线将英文字符转换为大写
('b' & '_') = 'B'
('B' & '_') = 'B'

// 3. 利用异或操作 `^` 和空格进行英文字符大小写互换
('d' ^ ' ') = 'D'
('D' ^ ' ') = 'd'

// 以上操作能够产生奇特效果的原因在于 ASCII 编码
// ASCII 字符其实就是数字，恰巧空格和下划线对应的数字通过位运算就能改变大小写
// 有兴趣的读者可以查 ASCII 码表自己算算，我就不展开讲了


// 4. 不用临时变量交换两个数
int a = 1, b = 2;
a ^= b;
b ^= a;
a ^= b;
// 现在 a = 2, b = 1


// 5. 加一
int n = 1;
n = -~n;
// 现在 n = 2


// 6. 减一
int n = 2;
n = ~-n;
// 现在 n = 1


// 7. 判断两个数是否异号
int x = -1, y = 2;
boolean f = ((x ^ y) < 0); // true

int x = 3, y = 2;
boolean f = ((x ^ y) < 0); // false